import request from '@/utils/request'
import {
  AllSaleAttrResponseDate,
  AllTradeMark,
  HasSupResponseDate,
  SaleAttrResponseData,
  SkuData,
  SkuInfoData,
  SpuData,
  SpuHasImg,
} from './type'

enum API {
  // 获取已有SPU的接口地址
  HAS_SPU_URL = '/admin/product/',
  // 获取所有SPU品牌数据接口地址
  ALL_TRADEMARK_URL = '/admin/product/baseTrademark/getTrademarkList',
  // 获取某一个SPU的照片墙/售卖商品图片接口地址
  IMAGE_URL = '/admin/product/spuImageList/',
  // 获取某一个SPU的全部销售属性的接口地址
  SPU_HAS_SALE_URL = '/admin/product/spuSaleAttrList/',
  // 获取整个项目全部的销售属性接口地址
  ALL_SALE_ATTR_URL = '/admin/product/baseSaleAttrList',
  // 添加一个新的SPU的接口地址
  ADD_SPU_URL = '/admin/product/saveSpuInfo',
  // 更新已有的SPU的接口地址
  UPDATE_URL = '/admin/product/updateSpuInfo',
  // 为已有的SPU添加一个SKU的接口地址
  ADD_SKU_URL = '/admin/product/saveSkuInfo',
  // 获取某一个SPU的售卖的SKU的接口地址
  SKU_INFO_URL = '/admin/product/findBySpuId/',
  // 删除指定SPU的接口方法
  REMOVE_SPU_URL = '/admin/product/deleteSpu/',
}

// 获取已有SPU的接口方法
export const reqHasSpu = (page: number, limit: number, category3Id: number) =>
  request.get<any, HasSupResponseDate>(
    API.HAS_SPU_URL + `${page}/${limit}?category3Id=${category3Id}`,
  )
// 获取所有SPU品牌的接口方法
export const reqAllTradeMark = () =>
  request.get<any, AllTradeMark>(API.ALL_TRADEMARK_URL)
// 获取某一个SPU的照片墙/售卖商品图片的接口方法
export const reqSpuImageList = (spuId: number) =>
  request.get<any, SpuHasImg>(API.IMAGE_URL + spuId)
// 获取某一个SPU的全部销售属性的接口方法
export const reqSpuSaleAttrList = (spuId: number) =>
  request.get<any, SaleAttrResponseData>(API.SPU_HAS_SALE_URL + spuId)
// 获取整个项目全部的销售属性的接口方法
export const reqAllSaleAttr = () =>
  request.get<any, AllSaleAttrResponseDate>(API.ALL_SALE_ATTR_URL)
// 更新已有的SPU的接口方法/新增一个SPU的接口方法
export const reqAddOrUpdateSpu = (data: SpuData) =>
  // data为新增/修改后的SPU对象  data中有id为更新,无id为新增
  data.id
    ? request.post<any, any>(API.UPDATE_URL, data)
    : request.post<any, any>(API.ADD_SPU_URL, data)
// 添加一个SKU的接口方法
export const reqAddSku = (data: SkuData) =>
  request.post<any, any>(API.ADD_SKU_URL, data)
// 获取某一个SPU下售卖的SKU的接口方法
export const reqSkuList = (spuId: number) =>
  request.get<any, SkuInfoData>(API.SKU_INFO_URL + spuId)
// 删除一个指定SPU的接口方法
export const reqRemoveSpu = (spuId: number) =>
  request.delete<any, any>(API.REMOVE_SPU_URL + spuId)
